package com.skq.controller;

import com.skq.pojo.Result;
import com.skq.utils.AliOssUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;

/**
 * @author skq
 * @data 2024/6/11
 */
@RestController
@Tag(name = "文件上传接口")
public class FileUploadController {

    @Operation(summary = "文件上传")
    @PostMapping("/upload")
    public Result<String> upload(MultipartFile file) throws Exception {
        //把文件的内容存储到本地磁盘上
        String originalFilename = file.getOriginalFilename();

        //保证文件的名字是唯一的，从而防止文件覆盖
        String fileName = UUID.randomUUID().toString()
                + originalFilename.substring(originalFilename.lastIndexOf("."));

        // 将文件传输到指定的目标文件路径
        // 这里使用了transferTo方法将当前文件对象传输到一个新的位置，实现了文件的移动或复制功能
        // 目标文件路径是通过拼接字符串的方式构造的，首先给出了一个基础路径，然后加上了文件名
//        file.transferTo(new File("D:\\学习\\SpringBoot\\文件上传\\" + fileName));

        // 通过调用AliOssUtil的uploadFile方法，将文件上传到阿里云OSS，并返回上传后的文件URL
        String url = AliOssUtil.uploadFile(fileName, file.getInputStream());
        
        return Result.success(url);
    }
}
